Hardware-assisted virtualization is a way of improving the efficiency of virtualizing a guest platform on a host device. This involves employing specially designed central processing units (CPUs) and hardware components that help improve the performance of a guest platform environment. Virtualization consists of two principal classes of software, which are the VMM (Virtual-Machine Monitor) and the guest software. The VMM acts as a host and has control of physical processors and other platform hardware. The VMM presents the guest software with an abstraction of a virtual processor and allows it to execute directly on a logical processor. In addition, the VMM is able to retain selective control of processor resources and other hardware. The Virtual Machine (VM) is a guest software environment that runs independently with reduced privilege, so that the VMM can retain control of the platform.
One problem in the control of a VM by a VMM is that an instruction of a processor running in the guest VM may attempt to modify protected or privileged data of the VM, where the protected or privileged data are stored in read-only memory. To determine if this instruction has access to the range of data the instruction wishes to modify, the VMM would need to fetch and decode that instruction, which is a costly process for the VMM.